/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package investigaciones_itm.upload;

import com.sun.webui.jsf.model.UploadedFile;
import itm.exception.ArchivoException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author jimmy
 */
public class Archivo {

    public void uploadFile(UploadedFile uploadedFile, String nombreArchivo, String path) throws ArchivoException {
        if (!uploadedFile.getOriginalName().equals("")) {
            File file = new File(path, nombreArchivo + ".pdf");
            if (!file.exists()) {
                try {
                    FileOutputStream fos;
                    fos = new FileOutputStream(file);
                    fos.write(uploadedFile.getBytes());
                    fos.flush();
                    fos.close();
                } catch (IOException ex) {
                    Logger.getLogger(Archivo.class.getName()).log(Level.SEVERE, null, ex);
                    throw new ArchivoException("Error al adjuntar el archivo", ex);
                }
            }
        }

    }

    public void downloadFile(String nombreArchivo, String path) throws ArchivoException {
        FileInputStream arc = null;
        try {
            FacesContext fc = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse();
            arc = new FileInputStream(path);
            int longitud = arc.available();
            byte[] datos = new byte[longitud];
            arc.read(datos);
            arc.close();
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=" + nombreArchivo + ".pdf");
            ServletOutputStream ouputStream = response.getOutputStream();
            ouputStream.write(datos);
            ouputStream.flush();
            ouputStream.close();
        } catch (IOException ex) {
            Logger.getLogger(Archivo.class.getName()).log(Level.SEVERE, null, ex);
            throw new ArchivoException("Error al descargar archivo", ex);
        } finally {
            try {
                if (arc != null) {
                    arc.close();
                }
            } catch (IOException ex) {
                Logger.getLogger(Archivo.class.getName()).log(Level.SEVERE, null, ex);
                throw new ArchivoException("Error al descargar archivo", ex);
            }
        }
    }
}
